home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Dev / gcc263-src.lha / gcc-2.6.3 / config / i386 / att.h < prev    next >
C/C++ Source or Header  |  1993-09-24  |  4KB  |  106 lines

  1. /* Definitions for AT&T assembler syntax for the Intel 80386.
  2.    Copyright (C) 1988 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Include common aspects of all 386 Unix assemblers.  */
  21. #include "i386/unix.h"
  22.  
  23. #define TARGET_VERSION fprintf (stderr, " (80386, ATT syntax)");
  24.  
  25. /* Define the syntax of instructions and addresses.  */
  26.  
  27. /* Prefix for internally generated assembler labels.  */
  28. #define LPREFIX ".L"
  29.  
  30. /* Assembler pseudos to introduce constants of various size.  */
  31.  
  32. /* #define ASM_BYTE_OP "\t.byte"  Now in svr3.h or svr4.h.  */
  33. #define ASM_SHORT "\t.value"
  34. #define ASM_LONG "\t.long"
  35. #define ASM_DOUBLE "\t.double"
  36.  
  37. /* How to output an ASCII string constant.  */
  38.  
  39. #define ASM_OUTPUT_ASCII(FILE, p, size) \
  40. do                                \
  41. { int i = 0;                             \
  42.   while (i < (size))                        \
  43.     { if (i%10 == 0) { if (i!=0) fprintf ((FILE), "\n");    \
  44.                fprintf ((FILE), "%s ", ASM_BYTE_OP); }    \
  45.       else fprintf ((FILE), ",");                \
  46.     fprintf ((FILE), "0x%x", ((p)[i++] & 0377)) ;}        \
  47.       fprintf ((FILE), "\n");                    \
  48. } while (0)
  49.  
  50. /* Do use .optim by default on this machine.  */
  51. #undef ASM_FILE_START_1
  52. #define ASM_FILE_START_1(FILE) fprintf (FILE, "\t.optim\n")
  53.  
  54. /* This is how to output an assembler line
  55.    that says to advance the location counter
  56.    to a multiple of 2**LOG bytes.  */
  57.  
  58. #define ASM_OUTPUT_ALIGN(FILE,LOG)    \
  59.     if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG))
  60.  
  61. /* This is how to output an assembler line
  62.    that says to advance the location counter by SIZE bytes.  */
  63.  
  64. #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
  65.   fprintf ((FILE), "\t.set .,.+%u\n", (SIZE))
  66.  
  67. /* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s.  */
  68.  
  69. #define ASM_NO_SKIP_IN_TEXT 1
  70.  
  71. #undef BSS_SECTION_FUNCTION  /* Override the definition from svr3.h.  */
  72. #define BSS_SECTION_FUNCTION \
  73. void                                \
  74. bss_section ()                            \
  75. {                                \
  76.   if (in_section != in_bss)                    \
  77.     {                                \
  78.       fprintf (asm_out_file, "%s\n", BSS_SECTION_ASM_OP);    \
  79.       in_section = in_bss;                    \
  80.     }                                \
  81. }
  82.  
  83. /* Define the syntax of labels and symbol definitions/declarations.  */
  84.  
  85. /* This is how to store into the string BUF
  86.    the symbol_ref name of an internal numbered label where
  87.    PREFIX is the class of label and NUM is the number within the class.
  88.    This is suitable for output with `assemble_name'.  */
  89.  
  90. #undef ASM_GENERATE_INTERNAL_LABEL
  91. #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER)    \
  92.   sprintf ((BUF), ".%s%d", (PREFIX), (NUMBER))
  93.  
  94. /* This is how to output an internal numbered label where
  95.    PREFIX is the class of label and NUM is the number within the class.  */
  96.  
  97. #undef ASM_OUTPUT_INTERNAL_LABEL
  98. #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM)    \
  99.   fprintf (FILE, ".%s%d:\n", PREFIX, NUM)
  100.  
  101. /* This is how to output a reference to a user-level label named NAME.  */
  102.  
  103. #undef ASM_OUTPUT_LABELREF
  104. #define ASM_OUTPUT_LABELREF(FILE,NAME)    \
  105.   fprintf (FILE, "%s", NAME)
  106.